package com.chisheng.caa.service;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * 文件操作服务接口。
 */
public interface FileService {

    /**
     * 文件上传表单参数名称
     */
    String UPLOAD_FORM_PARAM_NAME = "file";

    /**
     * 文件上传。可以通过此服务上传任意类型的文件。上传成功则返回文件码（FileCode）。
     * 在此系统中，可通过文件访问码对索引到指定的文件。操作失败以异常信息给出。
     *
     * @param file 上传的文件
     * @return 文件码
     */
    String upload(MultipartFile file);

    /**
     * 文件输出。通过此服务可以从系统中输出任何已经上传的文件。当给定的文件码无效时，会抛出非法
     * 参数异常消息。操作失败以异常信息给出。
     *
     * @param response 响应对象
     * @param fileCode 上传的文件码
     * @throws IllegalArgumentException 非法参数异常
     */
    void output(HttpServletResponse response, String fileCode);

}
